/**
 * 1. 防抖函数（Debounce）是一种解决高频率触发回调函数（例如输入框连续输入）过于频繁执行的问题的函数。
 * 2. 其核心思想是，当事件触发后先延迟执行回调函数，如果在延迟时间内再次触发了该事件，则重置延迟时间，直到听到最后一次触发事件后再去执行回调函数。
 * @param {Function} func 需要防抖的函数体。
 * @param {Object} context 函数执行的上下文。
 * @param {Number} delay 延迟时间，缺省1ms。
 */
function debounce (func, context, delay = 1) {
  let timer;
  let scope = context;
  return function () {
    clearTimeout(timer);
    timer = setTimeout(() => {
      func.apply(scope, arguments);
    }, delay);
  }
}
/**
 * 1. 节流函数（Throttle）是一种解决高频率触发回调函数（例如滚动事件、鼠标移动事件）过于频繁执行的问题的函数。
 * 2. 其核心思想是，当事件触发后在一定时间范围内只执行一次回调函数，期间的多余触发将被忽略。
 * @param {Function} func 需要防抖的函数体。
 * @param {Object} context 函数执行的上下文。
 * @param {Number} delay 延迟时间，缺省1ms。
 */
function throttle (func, context, delay = 1) {
  let timer;
  let scope = context;
  return function () {
    if (!timer) {
      timer = setTimeout(() => {
        func.apply(scope, arguments);
        timer = null;
      }, delay);
    }
  }
}
function getIndexType(constructName){
  switch (constructName) {
    case "Uint16Array":
      return 'uint16'
    case "Uint32Array":
      return 'uint32'
    case "Int16Array":
      return 'int16'
    case "Int32Array":
      return 'int32'

    default:
      break;
  }
}
export { throttle, debounce,getIndexType }